home *** CD-ROM | disk | FTP | other *** search
- /* mkdir: make a new directory
- * written by Eric R. Smith and placed in the public domain
- * modified by Alan Hourihane, to check for directory and return EEXIST.
- */
-
- #include <stdio.h>
- #include <osbind.h>
- #include <support.h>
- #include <unistd.h>
- #include <errno.h>
- #include "symdir.h"
- #include "lib.h"
-
- extern int errno;
-
- int mkdir(_path, mode)
- const char *_path;
- unsigned int mode;
- {
- int rv, name_munged;
- char path[FILENAME_MAX];
-
- /*
- * _unx2dos indicates whether the name has been modified in some way
- * in its return value. In this case, we try to create an
- * automatic symbolic link which gives the "real" name, which is put
- * in the global variable __link_name[].
- */
- name_munged = (_unx2dos(_path, path) == _NM_CHANGE);
-
- rv = Fattrib(path, 0, 0); /* Get file attributes */
- if (rv >= 0) { /* Does it exist ? */
- errno = EEXIST; /* Yes, so tell user. */
- return -1;
- }
-
- if (rv != -ENOENT) { /* Return stat error, if other than */
- errno = -rv; /* File not found. */
- return -1;
- }
-
- rv = Dcreate(path);
- if (rv < 0) {
- errno = -rv;
- return -1;
- }
- if (name_munged)
- _make_autolink(path, __link_name);
- return 0;
- }
-